As society becomes increasingly data driven, data storage needs have increased exponentially in recent years. As a result, methods for both larger amounts of storage and more efficient use of storage are often desirable.
In traditional storage provisioning models, storage space is allocated beyond current needs in anticipation of potential future needs. Although this allows for ensuring that sufficient space is available at any given time, the unneeded allocation results in low utilization and wasted storage resources.
One existing method for optimizing the efficiency of storage use in storage area networks is thin provisioning, which includes allocating storage space flexibly among multiple users based on the minimum amount of space needed by each user at any given time. Thin provisioning typically gives a user of a client device the impression that more physical resources are available than are actually allocated. This results in increased storage efficiency, as storage blocks are allocated on-demand.
Another existing solution for reducing wasted storage space is garbage collection. Garbage collection is a form of automatic memory management in which a garbage collector finds data objects that are not being used by a program and frees the portion of memory storing the data object, thereby reclaiming that portion of memory. Although garbage collection can result in increased data storage efficiency due to fewer wasted resources, garbage collection typically results either in slower performance or requires additional memory to have comparable speed to explicit memory management.
It would therefore be advantageous to provide a solution that would provide further improvements to storage efficiency.